Tweet X Scraper avatar

Tweet X Scraper

Pricing

from $0.15 / 1,000 tweets

Go to Apify Store
Tweet X Scraper

Tweet X Scraper

Collect public X/Twitter tweets from usernames, from:username queries, tweet URLs, and tweet IDs. Export clean tweet text, author info, engagement metrics, media, links, and run summaries without X login.

Pricing

from $0.15 / 1,000 tweets

Rating

0.0

(0)

Developer

Muhammad Qaseem Iqbal

Muhammad Qaseem Iqbal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Tweet X Scraper ๐Ÿš€

Collect clean, ready-to-use public tweet data from X/Twitter without needing an X login. Tweet X Scraper currently focuses on public usernames, from:username queries, tweet URLs, and tweet IDs, then saves the results in a clear Apify dataset you can export, analyze, or send to your own tools. โœจ

Use it for social listening, brand monitoring, market research, trend discovery, journalism, lead research, AI training datasets, RAG pipelines, and automated reporting. ๐Ÿ“Š

Tweet X Scraper works with public data only. It cannot access private or protected accounts, and it does not bypass X/Twitter permissions. Generic keyword, hashtag, mention, cashtag, and advanced search are reported as unsupported while X public search rejects guest requests. ๐Ÿ”’

๐ŸŒŸ What Can You Do With Tweet X Scraper?

  • ๐Ÿ‘ค Collect tweets from public usernames using simple profile inputs.
  • ๐Ÿ”Ž Use simple from:username queries such as from:apify or from:elonmusk.
  • ๐Ÿ”— Fetch exact tweets from tweet URLs or tweet IDs.
  • ๐Ÿงน Remove duplicate tweets when searches overlap.
  • ๐Ÿ“ˆ Capture useful engagement data such as likes, replies, reposts, quotes, bookmarks, and views when available.
  • ๐Ÿง‘โ€๐Ÿ’ผ Include author details such as username, display name, profile URL, verification signals, and follower counts when available.
  • ๐Ÿ–ผ๏ธ Detect media, links, hashtags, mentions, and cashtags.
  • ๐Ÿง  Add optional local enrichments such as engagement score, simple sentiment, entities, and topics.
  • ๐Ÿงพ Save a friendly run summary in OUTPUT so you can quickly see what happened.
  • โš ๏ธ Optionally save structured error records for unavailable tweets or failed lookups.
  • ๐Ÿ’ธ Run with cost-saving defaults from the first click.

๐Ÿ“ฃ Brand Monitoring

Track posts from public accounts you care about, such as your brand, executives, competitors, partners, or industry voices.

Example sources:

  • from:openai
  • from:apify
  • openai in fromUsers
  • Exact tweet URLs from X/Twitter

๐Ÿงญ Market Research

Discover what people are saying about products, industries, events, public figures, or fast-moving topics.

Great for:

  • ๐Ÿงช Product research
  • ๐Ÿ—ฃ๏ธ Voice-of-customer analysis
  • ๐Ÿ Competitor monitoring
  • ๐Ÿ“Š Trend reports
  • ๐Ÿ“ฐ Newsroom research

๐Ÿค– AI & Data Pipelines

Export clean JSON records for:

  • ๐Ÿง  LLM research datasets
  • ๐Ÿ” Retrieval-augmented generation
  • ๐Ÿ“š Knowledge bases
  • ๐Ÿ“ˆ Dashboards
  • ๐Ÿงช Data science notebooks
  • ๐Ÿ› ๏ธ Internal automation

โฐ Scheduled Monitoring

Run the Actor every hour, day, or week to watch new posts appear over time. Use monitoringMode, lookbackMinutes, and stateKey to keep recurring jobs organized. ๐Ÿ”

๐Ÿ Quick Start

  1. Open the Actor on Apify.
  2. Choose one or more working sources: username, from:username query, tweet URL, or tweet ID.
  3. Set the maximum number of tweets you want.
  4. Click Start.
  5. Download results from the Apify dataset as JSON, CSV, Excel, XML, RSS, or HTML. ๐ŸŽ‰

๐Ÿงช Simple Input Examples

๐Ÿ‘ค Tweets From A Public User

{
"fromUsers": ["openai"],
"maxItems": 100,
"sort": "latest"
}

๐Ÿ”Ž Use A from:username Query

{
"queries": ["from:apify"],
"maxItems": 50
}

๐Ÿ“ฃ Brand Account Monitoring

{
"fromUsers": ["AcmeBank", "AcmeSupport"],
"includeReplies": true,
"includeRetweets": false,
"maxItems": 1000
}

โš ๏ธ Unsupported Keyword Search Diagnostic

{
"queries": ["openai"],
"includeErrors": true
}

๐Ÿ”— Fetch Specific Tweet URLs

{
"tweetUrls": ["https://x.com/elonmusk/status/1846846285917131130"],
"includeAuthorDetails": true
}

๐Ÿ“… Scheduled User Monitoring

{
"fromUsers": ["openai"],
"monitoringMode": true,
"lookbackMinutes": 60,
"stateKey": "openai-hourly",
"maxItems": 5000
}

โฐ Hourly Monitoring

{
"fromUsers": ["AcmeBank"],
"monitoringMode": true,
"lookbackMinutes": 60,
"stateKey": "acme-bank-hourly",
"maxItems": 500
}

๐Ÿงฐ Input Options In Plain English

InputWhat it meansExample
queries ๐Ÿ”ŽSimple from:username queries. Generic keyword search is currently reported as unsupported.from:apify, from:openai
advancedQuery ๐Ÿง Currently unsupported for public guest scrapingLeave empty
tweetIds ๐Ÿ†”Exact tweet/status IDs to fetch"1846846285917131130"
tweetUrls ๐Ÿ”—Exact tweet links from x.com or twitter.comhttps://x.com/user/status/...
fromUsers ๐Ÿ‘คPublic accounts to search fromopenai, elonmusk
hashtags ๐Ÿท๏ธCurrently unsupported for public guest scrapingLeave empty
mentions ๐Ÿ“ฃCurrently unsupported for public guest scrapingLeave empty
cashtags ๐Ÿ’นCurrently unsupported for public guest scrapingLeave empty
maxItems ๐ŸŽฏMaximum tweet records to save50, 1000, 5000
sort ๐ŸงญResult style where supportedlatest, top, mixed
startTime / endTime ๐Ÿ“…Reserved for search-style sources; not required for username/tweet URL lookupsISO timestamps
language ๐ŸŒPrefer tweets in one languageen, es, fr
outputProfile ๐Ÿ“ฆHow much detail to saveminimal, standard, full
includeErrors โš ๏ธSave error rows for failed lookupstrue or false
proxyConfiguration ๐ŸŒOptional Apify proxy settingsOff by default

๐Ÿ“ฆ What Data Do You Get?

Tweet X Scraper saves results into the default Apify dataset. Each row is either a tweet record or, if enabled, an error record.

๐Ÿฆ Tweet Records

Depending on the selected output profile and what X/Twitter makes available, tweet records can include:

  • ๐Ÿ†” Tweet ID
  • ๐Ÿ”— X URL and Twitter URL
  • ๐Ÿ“ Tweet text
  • ๐Ÿ“… Created date and UNIX timestamp
  • ๐ŸŒ Language
  • ๐Ÿ“ฑ Source client when available
  • ๐Ÿ‘ค Author profile details
  • ๐Ÿ“ˆ Reply, repost, like, quote, view, and bookmark counts
  • ๐Ÿงต Conversation and reply information
  • ๐Ÿ–ผ๏ธ Media details
  • ๐Ÿ”— Links
  • ๐Ÿท๏ธ Hashtags, mentions, and cashtags
  • ๐Ÿšฉ Flags such as retweet, quote, pinned, sensitive, or conversation-controlled
  • ๐Ÿ”Ž Search metadata showing which input produced the tweet
  • ๐Ÿง  Optional enrichment fields
  • โฑ๏ธ Scrape timestamp

โš ๏ธ Error Records

When includeErrors is turned on, the Actor can save clear error rows for cases such as:

  • A tweet was deleted.
  • A tweet is private, protected, or unavailable.
  • A source could not be reached.
  • A request was blocked or timed out.

This is useful when you need a full audit trail of what happened during the run. ๐Ÿงพ

๐Ÿงพ Sample Tweet Output

{
"recordType": "tweet",
"id": "1846846285917131130",
"url": "https://x.com/elonmusk/status/1846846285917131130",
"twitterUrl": "https://twitter.com/elonmusk/status/1846846285917131130",
"text": "True",
"createdAt": "2024-10-17T09:30:41.000Z",
"lang": "en",
"author": {
"username": "elonmusk",
"name": "Elon Musk",
"url": "https://x.com/elonmusk",
"isBlueVerified": true
},
"metrics": {
"replyCount": 3480,
"retweetCount": 18171,
"likeCount": 85815,
"quoteCount": 264,
"viewCount": 10913296,
"bookmarkCount": 1426
},
"entities": {
"hashtags": [],
"mentions": [],
"urls": [],
"cashtags": []
},
"media": [],
"scrapedAt": "2026-06-15T08:00:00.000Z"
}

โš ๏ธ Sample Error Output

{
"recordType": "error",
"input": "0000000000000000004",
"operation": "tweetLookup",
"errorCode": "TWEET_UNAVAILABLE",
"errorMessage": "Tweet or source could not be found, is deleted, private, protected, or temporarily unavailable.",
"httpStatus": 404,
"retryCount": 0,
"scrapedAt": "2026-06-15T09:30:51.685Z"
}

๐Ÿ’ธ Built To Run Cheaply

Tweet X Scraper is configured to avoid surprise costs by default. The standard settings are intentionally conservative:

  • ๐Ÿ’พ outputProfile starts at minimal to reduce dataset size.
  • ๐ŸŽฏ maxItems starts at 50 for small trial runs.
  • ๐Ÿ“„ maxPagesPerQuery starts at 1 so runs do not automatically crawl deep result pages.
  • โš ๏ธ includeErrors starts at false so failed lookups do not add extra dataset rows unless you ask for them.
  • ๐ŸŒ Apify Proxy is off by default to avoid proxy charges unless you enable it.
  • ๐Ÿ” Retries are limited by default to avoid long, expensive failed runs.
  • ๐Ÿง  Deduplication is on, but persistent dedupe storage is off by default to reduce key-value store writes.
  • ๐Ÿงฎ The Actor supports low-memory runs starting at 256 MB.

For larger or more difficult jobs, you can increase limits, enable proxy, add retries, or use standard / full output. In short: start small, scale only when you need to. ๐Ÿšฆ

๐Ÿ“… Reliable Username Monitoring

For recurring jobs, schedule the Actor with fromUsers, monitoringMode, lookbackMinutes, and a stable stateKey. This keeps runs small, predictable, and easier to compare over time. ๐Ÿงฉ

๐Ÿง  Optional Enrichments

Tweet X Scraper can add lightweight local analysis fields without calling outside AI services:

  • ๐Ÿ“ˆ Engagement score
  • ๐Ÿ™‚ Basic sentiment
  • ๐Ÿท๏ธ Entities
  • ๐Ÿงต Topics
  • ๐Ÿ—‚๏ธ Custom topic labels

These enrichments are optional. Keep them off for the smallest, fastest output. Turn them on when you want more analysis-ready data. โœจ

๐Ÿ”Œ API Usage Example

You can run the Actor through the Apify API and receive dataset items back.

curl --request POST \
"https://api.apify.com/v2/acts/qaseemiqbal~tweet-x-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"fromUsers": ["openai"],
"maxItems": 100,
"sort": "latest",
"outputProfile": "minimal"
}'

Replace YOUR_APIFY_TOKEN with your Apify API token. ๐Ÿ”‘

๐Ÿ›ก๏ธ Important Notes

  • ๐Ÿ”’ Public data only: this Actor does not access private or protected accounts.
  • ๐Ÿšซ No X login required: you do not need to provide X/Twitter credentials.
  • ๐ŸŒฆ๏ธ Availability can vary: X/Twitter may limit, throttle, omit, or change public profile results.
  • ๐Ÿงช Empty runs return no fake tweet records.
  • โš ๏ธ Generic keyword, hashtag, mention, cashtag, and advanced search inputs are reported as unsupported while public X search rejects guest requests.
  • โš ๏ธ If a tweet is deleted or unavailable, it cannot be recovered by the Actor.
  • ๐ŸŒ Proxy can improve reliability for difficult runs, but it may increase cost.

๐Ÿงฏ Troubleshooting

๐Ÿ˜• I got no results. What should I try?

Try a public username, a from:username query, a tweet URL, or a tweet ID. Also remove strict filters such as includeImages, includeVideos, verifiedOnly, or high minimum engagement values.

๐Ÿ“‰ I expected more historical tweets.

Increase maxItems or split large username collections into separate runs. Public X availability can vary by account and by what the logged-out web app exposes.

๐ŸŒ Should I enable proxy?

Proxy is off by default to keep costs low. Enable Apify Proxy when reliability matters more than the cheapest possible run, especially for larger jobs or blocked requests.

๐Ÿงพ Why do I see error records?

You turned on includeErrors. Error records help you see which inputs failed and why. Turn it off if you only want successful tweet records.

๐Ÿ’พ My dataset is too large.

Use outputProfile: "minimal", keep includeRawData disabled, and collect fewer items per run.

๐Ÿ” I see duplicate-looking results.

Keep deduplicate enabled. Overlap can happen when a tweet URL, tweet ID, and username timeline point to the same tweet.

โ“ FAQ

Do I need an X/Twitter account? ๐Ÿ”

No. Tweet X Scraper is designed for public data and does not require your X/Twitter login.

Can it scrape protected accounts? ๐Ÿ”’

No. Protected/private content is not available.

Can I search by hashtag, keyword, mention, and cashtag? ๐Ÿท๏ธ

Not reliably through public guest access right now. The Actor reports these inputs as unsupported instead of spending requests on X search endpoints that currently return 404. Username timelines, from:username queries, tweet URLs, and tweet IDs are the supported paths.

Can I schedule it? โฐ

Yes. Use Apify schedules with monitoringMode, lookbackMinutes, and a stable stateKey.

Can I export the data? ๐Ÿ“ค

Yes. Apify datasets can be downloaded in common formats such as JSON, CSV, Excel, XML, RSS, and HTML.

Does it return fake data when nothing is found? ๐Ÿงช

No. Empty runs produce zero tweet records and a summary explaining what happened.

What is the cheapest way to start? ๐Ÿ’ธ

Start with maxItems: 50, outputProfile: "minimal", Apify Proxy disabled, and one focused username. Increase limits only after confirming the results look useful.

๐Ÿง‘โ€๐Ÿ’ป Local Development

Install dependencies:

$npm install

Run tests:

$npm test

Run locally with Apify CLI:

$apify run

Start the Node entrypoint:

$npm start

๐Ÿ—“๏ธ Changelog

0.1.0

  • ๐ŸŽ‰ Initial production-ready JavaScript Actor.
  • ๐Ÿงพ Added Apify manifest, input schema, output schema, and dataset schema.
  • ๐Ÿฆ Added public X/Twitter tweet lookup and search support.
  • ๐Ÿ’ธ Added low-cost defaults for smaller trial runs.
  • ๐Ÿงช Added automated tests and Docker support.